home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Just Call Me Internet
/
Just Call Me Internet.iso
/
com
/
internet
/
sting
/
time
/
t_random
/
t_random.s
< prev
Wrap
Text File
|
1997-08-09
|
6KB
|
199 lines
;----------------------------------------------------------------------------
;File name: T_RANDOM.S Revision date: 1997.08.10
;Creator: Ulf Ronald Andersson Creation date: 1997.08.01
;(c)1996 by: Ulf Ronald Andersson All rights reserved
;----------------------------------------------------------------------------
;Purpose: Randomizes the system time setting, to allow repeated
; testing of time server clients that can correct this.
;----------------------------------------------------------------------------
;Required header declarations:
;
.include "uran\STRUCT.SH" ;PASM adapted structures
.include "uran\URAn_SYS.SH" ;Main system definitions
.include "uran\URAn_LA.SH" ;Line A variables etc
.include "uran\URAn_DOS.SH" ;GEMDOS, BIOS, XBIOS
.include "uran\URAn_GEM.SH" ;VDI & AES
.include "uran\URAn_APP.SH" ;General application support
.include "uran\URAn_AV.SH" ;AV/VA protocol + MP protocol
;
.include "sting\NET_TCON.SH" ;handles time conversions
;
;----------------------------------------------------------------------------
;
exec_message = 1
;
;----------------------------------------------------------------------------
;
.text
;
start_app
;
;----------------------------------------------------------------------------
;
.data
;
acc_name:
dc.b ' Time Randomizer',NUL ;for ACC menu registration
dc.b NUL
even
;
id_app_name_s:
dc.b 'T_RANDOM',NUL
even
;
;----------------------------------------------------------------------------
;
.bss
;
message: ds.w 8 ;evnt_mesag message pipe
intin: ds.w 30 ;30 words or more for AES/VDI
intout: ds.w 45 ;45 words or more for AES/VDI
ptsin: ds.w 30 ;30 words or more for VDI
ptsout: ds.w 12 ;12 words or more for VDI output coordinates
ds.l 200 ;subroutine stack >= 100 longs
mystack: ds.l 1 ;top of subroutine stack
;
;----------------------------------------------------------------------------
;
.text
;
;----------------------------------------------------------------------------
;Start of: init_app
;----------------------------------------------------------------------------
;
init_app:
rts
;
;----------------------------------------------------------------------------
;End of: init_app
;----------------------------------------------------------------------------
;Start of: exec_app
;----------------------------------------------------------------------------
;
exec_app:
xbios Random ;get one 24 bit random number, but it
add.l d0,rand_seed ;isn't very good, so only used as seed
bsr rand_long ;this gives a very random longword
lea tcon_data(pc),a0
move.l d0,tcon_net_time(a0) ;simulate random network time
tcon_net2man ;convert 32 bit number to human (separate) time format
tcon_man2tos ;convert to TOS format (2 bitpacked words)
tcon_tos2real ;set system time to the resulting (random) time & date
exit_terminate:
clr.l d0
rts
;
;----------------------------------------------------------------------------
;End of: exec_app
;----------------------------------------------------------------------------
;Start of: exec_mesag
;----------------------------------------------------------------------------
;
.ifne exec_message
exec_mesag:
cmp #AC_CLOSE,message
bne.s .not_AC_CLOSE
sf keep_wind_f
bra exit_exec_mesag
;
.not_AC_CLOSE:
cmp #AP_TERM,message
bne.s .not_AP_TERM
tst.l d7
bmi exit_exec_mesag ;AP_TERM is not for ACCs
clr.l d0 ;flag no error
bra exit_terminate
;
.not_AP_TERM:
cmp #VA_START,message
bne.s .not_VA_START
st VA_START_f
move message+2,AV_partner_id
move.l message+6,VA_START_cmd_p
AV_send PROTOKOLL,#w_VA_START+w_AV_STARTED_A,id_app_name_s
;
;Add ALL handling of the passed command line here, if you need to do some later
;you must copy it here, because the original may disappear after AV_STARTED.
;
AV_send.i STARTED,VA_START_cmd_p
bra exec_app
;
.not_VA_START:
cmp #VA_PROTOSTATUS,message
bne.s .not_VA_PROTOSTATUS
move message+8,VA_protostatus
move message+6,VA_protostatus+2
bra exit_exec_mesag
;
.not_VA_PROTOSTATUS:
exec_mesag_extend:
;
;Add client/server dependent message event work here
;
exit_exec_mesag:
rts
.endif exec_message
;
;----------------------------------------------------------------------------
;End of: exec_mesag
;----------------------------------------------------------------------------
;
rand_long:
move.l rand_seed(pc),d0
bne.s .seed_ok
move.l #'Rand',d0
.seed_ok:
bsr.s rand_31_long
move.l d0,rand_seed
rts
;
rand_seed:
dc.l 'Rand'
;
;----------------------------------------------------------------------------
;
rand_31_long: ;generates 32 entirely new bits from older value
lsr.l #1,d0 ;Adjust 31-bit pseudorandom shifter
move.l d0,d1 ;copy to d1
ror.l #3,d1 ;shift d1 by 3 bits for 31 bit pseudorandomicity
eor.w d1,d0 ;generate 16 new pseudorandom top bits
swap d0 ;align 16 new bits correctly
roxl.w #1,d0 ;align 15 old bits correctly and get dummy bit 0
rand_31_word: ;generates 16 entirely new bits from older value
lsr.l #1,d0 ;Adjust 31-bit pseudorandom shifter
move.l d0,d1 ;copy to d1
ror.l #3,d1 ;shift d1 by 3 bits for 31 bit pseudorandomicity
eor.w d1,d0 ;generate 16 new pseudorandom top bits
swap d0 ;align 16 new bits correctly
roxl.w #1,d0 ;align 15 old bits correctly and get dummy bit 0
rts
;
;----------------------------------------------------------------------------
;
make GEM_links
make TCON_links
make AV_links
;
;----------------------------------------------------------------------------
;
text_limit: .data
;
;----------------------------------------------------------------------------
;
;----------------------------------------------------------------------------
;
data_limit: .bss
;
;----------------------------------------------------------------------------
;
tcon_data: ds.b sizeof_tcon
VA_START_f: ds.w 1
VA_START_cmd_p: ds.l 1
VA_protostatus: ds.l 1
;
;----------------------------------------------------------------------------
bss_limit: .end
;----------------------------------------------------------------------------
;End of file: T_RANDOM.S
;----------------------------------------------------------------------------